﻿using Sisco.AplicacionEscritorio.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Sisco.AplicacionEscritorio.Equipo
{
    public partial class DarBajaEquipo : Form
    {
        private AccesoDatos.USUARIO usuarioSistema;

        public DarBajaEquipo()
        {
            InitializeComponent();
        }

        public DarBajaEquipo(AccesoDatos.USUARIO usuariosistema) : this()
        {
            usuarioSistema = usuariosistema;
        }

        private void DarBajaEquipo_Load(object sender, EventArgs e)
        {
            this.CargarListaTipoEquipo();
        }

        private void CargarListaTipoEquipo()
        {
            LogicaNegocio.TipoEquipoBLL tipoEquipoBLL = new LogicaNegocio.TipoEquipoBLL();

            cmbTipoEquipo.DataSource = tipoEquipoBLL.Listar();
            cmbTipoEquipo.ValueMember = "ID";
            cmbTipoEquipo.DisplayMember = "NOMBRETIPO";
            cmbTipoEquipo.SelectedIndex = -1;
        }

        private void btnRepBuscar_Click(object sender, EventArgs e)
        {
            if (cmbTipoEquipo.SelectedIndex >= 0)
            {
                AccesoDatos.TIPOEQUIPO selectedTipoEquipo = cmbTipoEquipo.SelectedItem as AccesoDatos.TIPOEQUIPO;
                
                LogicaNegocio.EquipoBLL equipoBLL = new LogicaNegocio.EquipoBLL();
                LogicaNegocio.EstadoEquipoBLL estadoEquipoBLL = new LogicaNegocio.EstadoEquipoBLL();

                AccesoDatos.EQUIPO_ESTADO equipoEstado = estadoEquipoBLL.GetEstadoEquipo("Liberado");
                
                if (equipoEstado != null)
                {
                    List<AccesoDatos.EQUIPO> lista = equipoBLL.ListarEquiposxEstado(selectedTipoEquipo, equipoEstado);

                    gridEquiposAsignados.DataSource = lista;
                    gridEquiposAsignados.ClearSelection(); 
                }
            }
        }

        private void gridEquiposAsignados_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridEquiposAsignados.DataSource != null)
            {
                gridEquiposAsignados.Columns["ID"].Visible = false;
                gridEquiposAsignados.Columns["IDUSUARIO"].Visible = false;
                gridEquiposAsignados.Columns["IDEQUIPO"].Visible = false;
                gridEquiposAsignados.Columns["IDTIPOEQUIPO"].Visible = false;
                gridEquiposAsignados.Columns["IDESTADO"].Visible = false;
                gridEquiposAsignados.Columns["TIPOEQUIPO"].Visible = false;
                gridEquiposAsignados.Columns["MARCA"].HeaderText = "Marca";
                gridEquiposAsignados.Columns["MODELO"].HeaderText = "Modelo";
                gridEquiposAsignados.Columns["SERIE"].HeaderText = "Serie";
                gridEquiposAsignados.Columns["ELIMINADO"].Visible = false;
                gridEquiposAsignados.Columns["IDUSUARIOANTIGUO"].Visible = false;
                gridEquiposAsignados.Columns["ASIGNADO"].Visible = false;
                gridEquiposAsignados.Columns["FECHAREGISTRO"].Visible = false;
                gridEquiposAsignados.Columns["REGISTRADOPOR"].Visible = false;
                gridEquiposAsignados.Columns["FECHAMODIFICACION"].Visible = false;
                gridEquiposAsignados.Columns["MODIFICADOPOR"].Visible = false;
                gridEquiposAsignados.Columns["NOMBEQUIPO"].Visible = false;
                gridEquiposAsignados.Columns["EQUIPO_ESTADO"].Visible = false;
                gridEquiposAsignados.Columns["TIPOEQUIPO1"].HeaderText = "Tipo de equipo";
                gridEquiposAsignados.Columns["RELACION_EQUI_PROG"].Visible = false;
                gridEquiposAsignados.Columns["USUARIO"].Visible = false;
                gridEquiposAsignados.Columns["MOVIMIENTO"].Visible = false;
            }
        }

        private void gridEquiposAsignados_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (gridEquiposAsignados.Columns[e.ColumnIndex].Name == "TIPOEQUIPO1")
            {
                AccesoDatos.TIPOEQUIPO tipoequipo = e.Value as AccesoDatos.TIPOEQUIPO;

                if (tipoequipo != null)
                {
                    e.Value = tipoequipo.NOMBRETIPO.Trim();
                }
            }
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnDarBaja_Click(object sender, EventArgs e)
        {
            bool darBaja = false;

            DialogResult dr = MessageBox.Show("¿Confirma dar de baja los equipos seleccionados?", "Sisco", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);

            if (dr == DialogResult.Yes)
            {
                //Se dan de baja a los equipos
                AccesoDatos.EQUIPO selectedEquipo;
                LogicaNegocio.EquipoBLL equipoBLL;

                foreach (DataGridViewRow row in gridEquiposAsignados.SelectedRows)
                {
                    selectedEquipo = row.DataBoundItem as AccesoDatos.EQUIPO;

                    if (selectedEquipo != null)
                    {
                        equipoBLL = new LogicaNegocio.EquipoBLL();
                        int result = equipoBLL.DarBajaEquipo(selectedEquipo, usuarioSistema);

                        if (result > 0)
                        {
                            darBaja = true;
                        }
                        else
                        {
                            MessageBox.Show("Error al Dar de baja a los equipos", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                            break;
                        }
                    }
                }

                if (darBaja)
                {
                    MessageBox.Show("Equipos dados de baja", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);

                    btnRepBuscar.PerformClick();

                    //LogicaNegocio.UsuarioBLL usuarioBLL = new LogicaNegocio.UsuarioBLL();
                    //equipoBLL = new LogicaNegocio.EquipoBLL();

                    //AccesoDatos.USUARIO usuario = usuarioBLL.GetUsuario(int.Parse(txtUsuario.Tag.ToString()));
                    //List<AccesoDatos.EQUIPO> equiposAsignados = equipoBLL.ListarEquipo(usuario);

                    //gridEquiposAsignados.DataSource = equiposAsignados;
                    //gridEquiposAsignados.ClearSelection();
                }
            }            
        }
    }
}
